﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.IO;

namespace DIProject.Util.Payments
{
    public class Common
    {
        private const string _fileName = "/TypePayments.xml";
        private XmlDocument _doc = new XmlDocument();
        /// <summary>
        /// путь к xml файлу
        /// </summary>
        public string FilePath
        {
            get
            {
                string curDirectory = Directory.GetCurrentDirectory();
                string fileName = curDirectory + _fileName;
                if (System.IO.File.Exists(fileName))
                    return fileName;
                return string.Empty;
            }
        }
        public Common()
        { }
        private void Load()
        {
            try
            {
                if (string.IsNullOrEmpty(this.FilePath))
                    return;
                _doc.Load(this.FilePath);
            }
            catch (Exception ee)
            {
                System.Windows.Forms.MessageBox.Show("Не удалось загрузить конфигурационный файл скидок");
            }
        }
        private static List<KeyValuePair<Int32, string>> _payments = null;
        public List<KeyValuePair<Int32, string>> Payments
        {
            get
            {
                if (_payments != null)
                    return _payments;
                _payments = new List<KeyValuePair<Int32, string>>();
                _payments.Add(new KeyValuePair<Int32, string>(1, "Наличными"));//наличными есть всегда
                Load();
                foreach (XmlNode node in _doc.SelectNodes("root/payment"))
                {
                    string description = node.Attributes["description"].Value;
                    string value = node.Attributes["value"].Value;
                    Int32 bValue;
                    if (!Int32.TryParse(value, out bValue))
                    {
                        throw new Util.DIException("Не возможно конвертировать скидку в целое число, исправьте конфигурационный файл");
                    }
                    _payments.Add(new KeyValuePair<int, string>(bValue, description));
                }
                return _payments;
                
            }
        }
    }
    
}
